#pragma once
#include "glew.h"
#include <stack>
#include <map>
#include <string>

class GPUProgram
{
public:
	GPUProgram();

	~GPUProgram();

	void AttachShader(GLenum shaderType, const char * shaderPath);

	void DetectAttribute(const char * attributeName);

	void DetectUniform(const char * uniformName);

	GLint GetLocation(const char * locationName);

	void Link();

	//gpu resource id
	GLuint mProgram;
	std::stack<GLuint> mAttachShaders;
	std::map<std::string, GLint> mLocations;
};
